package rs.ac.uns.ftn.informatika.mbs2.e11031.etaksi.entitet;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@SuppressWarnings("serial")
@Entity
@Table(name = "vozilo")
public class Vozilo implements Serializable {

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "vo_id")
	private Integer id;

	@Column(name = "vo_reg_broj", nullable = false)
	private String registarskiBroj;

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "vo_kd_id", referencedColumnName = "kd_id", nullable = false)
	private KategorijaDozvole kategorija;

	@Column(name = "vo_marka", nullable = false)
	private String marka;

	@Column(name = "vo_tip", nullable = false)
	private String tip;

	@Column(name = "vo_boja", nullable = false)
	private String boja;

	@Column(name = "vo_mesta_za_sed", nullable = false)
	private Byte mestaZaSedenje;

	@Column(name = "vo_zap_prtljaznika", nullable = false)
	private Float zapreminaPrtljaznika;

	@Column(name = "vo_nos_prtljaznika", nullable = false)
	private Float nosivostPrtljaznika;

	@Column(name = "vo_oznaka", nullable = false)
	private Integer oznaka;

	@OneToOne(mappedBy = "vozilo", optional = true)
	private Vozac vozac;

	public Vozilo() {
		super();
	}

	public Vozilo(String registarskiBroj, KategorijaDozvole kategorija,
			String marka, String tip, String boja, Byte mestaZaSedenje,
			Float zapreminaPrtljaznika, Float nosivostPrtljaznika,
			Integer oznaka, Vozac vozac) {
		super();
		this.registarskiBroj = registarskiBroj;
		this.kategorija = kategorija;
		this.marka = marka;
		this.tip = tip;
		this.boja = boja;
		this.mestaZaSedenje = mestaZaSedenje;
		this.zapreminaPrtljaznika = zapreminaPrtljaznika;
		this.nosivostPrtljaznika = nosivostPrtljaznika;
		this.oznaka = oznaka;
		this.vozac = vozac;
	}

	public String getRegistarskiBroj() {
		return registarskiBroj;
	}

	public void setRegistarskiBroj(String registarskiBroj) {
		this.registarskiBroj = registarskiBroj;
	}

	public KategorijaDozvole getKategorija() {
		return kategorija;
	}

	public void setKategorija(KategorijaDozvole kategorija) {
		this.kategorija = kategorija;
	}

	public String getMarka() {
		return marka;
	}

	public void setMarka(String marka) {
		this.marka = marka;
	}

	public String getTip() {
		return tip;
	}

	public void setTip(String tip) {
		this.tip = tip;
	}

	public String getBoja() {
		return boja;
	}

	public void setBoja(String boja) {
		this.boja = boja;
	}

	public Byte getMestaZaSedenje() {
		return mestaZaSedenje;
	}

	public void setMestaZaSedenje(Byte mestaZaSedenje) {
		this.mestaZaSedenje = mestaZaSedenje;
	}

	public Float getZapreminaPrtljaznika() {
		return zapreminaPrtljaznika;
	}

	public void setZapreminaPrtljaznika(Float zapreminaPrtljaznika) {
		this.zapreminaPrtljaznika = zapreminaPrtljaznika;
	}

	public Float getNosivostPrtljaznika() {
		return nosivostPrtljaznika;
	}

	public void setNosivostPrtljaznika(Float nosivostPrtljaznika) {
		this.nosivostPrtljaznika = nosivostPrtljaznika;
	}

	public Integer getOznaka() {
		return oznaka;
	}

	public void setOznaka(Integer oznaka) {
		this.oznaka = oznaka;
	}

	public Vozac getVozac() {
		return vozac;
	}

	public void setVozac(Vozac vozac) {
		this.vozac = vozac;
	}

	public Integer getId() {
		return id;
	}

	@Override
	public String toString() {
		return "Vozilo [id=" + id + ", registarskiBroj=" + registarskiBroj
				+ ", kategorija=" + kategorija + ", marka=" + marka + ", tip="
				+ tip + ", boja=" + boja + ", mestaZaSedenje=" + mestaZaSedenje
				+ ", zapreminaPrtljaznika=" + zapreminaPrtljaznika
				+ ", nosivostPrtljaznika=" + nosivostPrtljaznika + ", oznaka="
				+ oznaka + ", vozac=" + vozac + "]";
	}

}
